package com.itkaien.AopAspectjXml.advice;

import org.aspectj.lang.ProceedingJoinPoint;
import org.springframework.stereotype.Component;

//@Component
public class Myadvice {

    //前置通知 ： 在目标方法执行之前执行
    public void before(){
        System.out.println("before");
    }

    //后置通知 ： 当目标方法正常返回时执行
    public void afterReturning(ProceedingJoinPoint proceedingJoinPoint){
        System.out.println("around afterReturning");
    }



    public void afterReturning(){
        System.out.println("afterReturning");
    }

    //异常通知 ： 当目标方法出现异常时执行
    public void afterThrowing(){
        System.out.println("afterThrowing");
    }

    //环绕通知 ： 在目标方法执行前后执行
    public void around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable{
        System.out.println("around before");
        proceedingJoinPoint.proceed();
        System.out.println("around after");
    }


    //最终通知 ：不管运行是否出现异常，都会执行
    public void after(){
        System.out.println("after");
    }



}
